﻿/*
GameBox .NET
Copyright (c) 2011 Jakub "Cubix651" Cisło - http://cubix.one.pl

License: X11 (MIT) See README file.
*/

using System;
using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;
using System.Xml;

namespace GameBoX
{
	/// <summary>
	/// Description of MainForm.
	/// </summary>
	public partial class MainForm : Form
	{
		public MainForm()
		{
			//
			// The InitializeComponent() call is required for Windows Forms designer support.
			//
			InitializeComponent();
			
			//
			//
			//
		}
	
		//obrazki
		
		//teren
		System.Drawing.Image trawa=Image.FromFile("las1.bmp");
		System.Drawing.Image trawa2=Image.FromFile("las2.bmp");
		//postaci
		System.Drawing.Image cubix=Image.FromFile("cubix1.bmp");
		System.Drawing.Image wolverine=Image.FromFile("wolverine1.bmp");
		System.Drawing.Image cubix2=Image.FromFile("cubix2.bmp");
		System.Drawing.Image wolverine2=Image.FromFile("wolverine2.bmp");
				
		//przeciwnicy
		System.Drawing.Image[] gosc={
			Image.FromFile("gosc1.bmp"),
			Image.FromFile("gosc2.bmp"),
			Image.FromFile("gosc3.bmp"),
			Image.FromFile("gosc4.bmp"),
			Image.FromFile("gosc5.bmp"),
			Image.FromFile("gosc6.bmp"),
		};
		//dom
		System.Drawing.Image dom=Image.FromFile("dom1.bmp");
		//mikstury
		System.Drawing.Image[] mikstura={
			Image.FromFile("mikstura1.bmp"),
			Image.FromFile("mikstura2.bmp"),
			Image.FromFile("mikstura3.bmp"),
			Image.FromFile("mikstura4.bmp"),
			Image.FromFile("mikstura5.bmp"),
		};
		//stworki
		int poziom=1;
		int[] indeks=new int[7];
		System.Drawing.Image[,] stworek= new System.Drawing.Image[3,26];
		void InicjajcjaStworkow()
		{
			for(int i=0;i<26;i++)
			{
				stworek[0,i]=Image.FromFile("stworek1 ("+i+").bmp");
			}	
			for(int i=0;i<26;i++)
			{
				if(i<16) stworek[1,i]=Image.FromFile("stworek2 ("+i+").bmp");
				else stworek[1,i]=null;
			}
			for(int i=0;i<26;i++)
			{
				if(i<6)	stworek[2,i]=Image.FromFile("stworek3 ("+i+").bmp");
				else stworek[2,i]=null;
			}
		}
		//ataki
		/*
		System.Drawing.Image[] atak=
		{
			null,
			Image.FromFile("atak1.bmp"),
			Image.FromFile("atak2.bmp"),
			Image.FromFile("atak3.bmp"),
			Image.FromFile("atak4.bmp"),
			Image.FromFile("atak5.bmp"),
			Image.FromFile("atak6.bmp"),
			Image.FromFile("atak7.bmp"),
			Image.FromFile("atak8.bmp"),
			Image.FromFile("atak9.bmp"),
		};
		*/
	
	
		
		//zmienne
		bool kupowanie=false;
		bool sprzedawanie=false;
		bool walka=false;
		bool mikstury=false;
		bool ucieczka=false;
		bool moznaAtakowac=true;
		bool czyTrans=false;
		bool wygrana=false;
		bool moznaLapac=false;
		bool jestLapanie=false;
		int postac=0;
		int gdzied, gdzies, gdzieg=1;
		int jakis, jakig=0;
		int pozycjad, pozycjas, pozycjag=0;
		int gklik, dklik, sklik=0;
		int lkasa=10000;
		int llevel=1;
		int	lexpo=100;
		int latak, lobrona;
		int mup, mtp, mutp, map, mop=0;
		int grzybek=2;
		int wybrany=0;
		int mojatak;
		int ktoreHP=0;
		int potrzebneExpo;		
		
		//sćeżka zapisu pliku
		string zapis="zapis.xml";
		
		//metoda przypisująca stworki, gdy zaczynamy grę
		void przypisanieStworkow()
		{
			Random r= new Random();
			for(int i =0;i<7; i++)
			{
				indeks[i]=r.Next(26);
			}
			stworek1.Image=stworek[0,indeks[0]];
			stworek2.Image=stworek[0,indeks[1]];
			stworek3.Image=stworek[0,indeks[2]];
			stworek4.Image=stworek[0,indeks[3]];
			stworek5.Image=stworek[0,indeks[4]];
			stworek6.Image=stworek[0,indeks[5]];
            stworek7.Image=stworek[0,indeks[6]];
			
		}
			
		//metoda odczytująca zapisaną grę
		public void czytajOpcje(string nazwaPliku)
		{
			XmlTextReader xml=null;
			try
			{
		
					if(!System.IO.File.Exists(zapis)) przypisanieStworkow();
					else
				{
				
				xml=new XmlTextReader(zapis);
			
				//<opcje>
				xml.ReadStartElement("opcje");
				
				//<skile>
				xml.ReadStartElement("skile");
				
				//level, życie..
				llevel=int.Parse(xml.ReadElementString("level"));
				lexpo=int.Parse(xml.ReadElementString("expo"));
				hp1.Value=int.Parse(xml.ReadElementString("życie1"));
				hp2.Value=int.Parse(xml.ReadElementString("życie2"));
				hp3.Value=int.Parse(xml.ReadElementString("życie3"));
				hp4.Value=int.Parse(xml.ReadElementString("życie4"));
				hp5.Value=int.Parse(xml.ReadElementString("życie5"));
				hp6.Value=int.Parse(xml.ReadElementString("życie6"));
				hp7.Value=int.Parse(xml.ReadElementString("życie7"));
				latak=int.Parse(xml.ReadElementString("atak"));
				lobrona=int.Parse(xml.ReadElementString("obrona"));
				
				//</skile>
				xml.ReadEndElement();
				
				//<stworki>
				xml.ReadStartElement("stworki");
				
				//stworki
				for(int i=0; i<7; i++)
				{
					indeks[i]=int.Parse(xml.ReadElementString("s"+ (i+1)));
					
				}
																	
				//</stworki>
				xml.ReadEndElement();
				
				//<plecak>
				xml.ReadStartElement("plecak");
				
				//mu, ..., mo, kasa
				mup=int.Parse(xml.ReadElementString("mu"));
				mtp=int.Parse(xml.ReadElementString("mt"));
				mutp=int.Parse(xml.ReadElementString("mut"));
				map=int.Parse(xml.ReadElementString("ma"));
				mop=int.Parse(xml.ReadElementString("mo"));
				lkasa=int.Parse(xml.ReadElementString("kasa"));
				
				//</plecak>
				xml.ReadEndElement();
				
				//label1.Text=xml.ReadElementString("label1");
				walka=walka1.Visible=bool.Parse(xml.ReadElementString("walka"));
				domek.Visible=bool.Parse(xml.ReadElementString("domek"));
				postac=int.Parse(xml.ReadElementString("postac"));
				
				//koniec odczytu
				xml.Close();
				stworek1.Image=stworek[0,indeks[0]];
				stworek2.Image=stworek[0,indeks[1]];
				stworek3.Image=stworek[0,indeks[2]];
				stworek4.Image=stworek[0,indeks[3]];
				stworek5.Image=stworek[0,indeks[4]];
				stworek6.Image=stworek[0,indeks[5]];
				stworek7.Image=stworek[0,indeks[6]];
				
				if(walka) Walczenie(0);
				}
			}
			catch(Exception exc)
			{
				MessageBox.Show("Błąd przy odczycie zapisanej gry -"+exc.Message, "Błąd", MessageBoxButtons.OK, MessageBoxIcon.Error);
				//xml.Close();
			}
		}
		
		
		//ładowanie formy
		void MainFormLoad(object sender, EventArgs e)
		{
			InicjajcjaStworkow();
			//przypisanie obrazków terenu
			gra1.Image=trawa2;
			gra2.Image=gra3.Image=gra4.Image=gra52.Image=gra6.Image=gra7.Image=gra8.Image=gra9.Image=trawa;
			Wiadomosc("Witaj w grze GameBoX: Wolve i Cubix!\nWłaśnie zostały wylosowane twoje stworki, a teraz kliknij postać którą chcesz wybrać.");
			//odczytanie opcji z zapisu
			czytajOpcje(null);
			//wybranie postaci z pliku jeśli jest zapisana
			if(postac!=0)
			{
				if(postac==1) gra5.Image=wolverine;
				else gra5.Image=cubix;
				wybor1.Visible=wybor2.Visible=false;
				grzyb.Enabled=true;
			}
			//zmienne gry: kasa, level, expo, atak, obrona, życie, mikstury
			liczbaKasy.Text=lkasa+"";
			level.Text=llevel+"";
			expo.Text=lexpo+"";
			atakk.Text=latak+"";
			obrona.Text=lobrona+"";
			mu.Text=mup+"";
			mt.Text=mtp+"";
			mut.Text=mutp+"";
			ma.Text=map+"";
			mo.Text=mop+"";
            log.SelectedIndex = 0;
		}
		#region Poruszanie i wybor
		
		//wybór 1. postaci
		void Wybor1Click(object sender, EventArgs e)
		{
			gra5.Image=wolverine;
			postac=1;
			wybor1.Visible=false;
			wybor2.Visible=false;
			Wiadomosc("Wybrałeś/aś Wolverine'a. Poruszanie:\nW - do góry(/\\)\nS - na dół(\\/)\nA - w lewo(<-)\nD - w prawo(->)");
			//aktywowanie pojawiania się grzybka
			grzyb.Enabled=true;
		}
		//wybór 2. postaci
		void Wybor2Click(object sender, EventArgs e)
		{
			gra5.Image=cubix;
			postac=2;
			wybor1.Visible=false;
			wybor2.Visible=false;
			Wiadomosc("Wybrałeś/aś Cubixa. Poruszanie:\nW - do góry(/\\)\nS - na dół(\\/)\nA - w lewo(<-)\nD - w prawo(->)");
			//aktywowanie pojawiania się grzybka
			grzyb.Enabled=true;
		}
		//na ukos <- i /\
		void Gra1Click(object sender, EventArgs e)
		{
			Sprawdzanie(1);
			Gra2Click(null,null);
			Gra4Click(null,null);
		}
		//do góry /\
		void Gra2Click(object sender, EventArgs e)
		{
			Sprawdzanie(2);
			gra8.Image=gra52.Image;
			gra52.Image=gra2.Image;
			gra2.Image=trawa;
			gra7.Image=gra4.Image;
			gra4.Image=gra1.Image;
			gra1.Image=trawa;
			gra9.Image=gra6.Image;
			gra6.Image=gra3.Image;
			gra3.Image=trawa;
			pozycjad+=3;
			pozycjas+=3;
			pozycjag+=3;
			Poruszanie();
		}
		//na ukos -> /\
		void Gra3Click(object sender, EventArgs e)
		{
			Sprawdzanie(3);
			Gra2Click(null,null);
			Gra6Click(null,null);		
		}
		//w lewo <-
		void Gra4Click(object sender, EventArgs e)
		{
			Sprawdzanie(4);
			gra6.Image=gra52.Image;
			gra52.Image=gra4.Image;
			gra4.Image=trawa;
			gra3.Image=gra2.Image;
			gra2.Image=gra1.Image;
			gra1.Image=trawa;
			gra9.Image=gra8.Image;
			gra8.Image=gra7.Image;
			gra7.Image=trawa;
			pozycjad+=1;
			pozycjas+=1;
			pozycjag+=1;
			Poruszanie();
			
		}
		//w prawa ->
		void Gra6Click(object sender, EventArgs e)
		{
			Sprawdzanie(6);
			gra4.Image=gra52.Image;
			gra52.Image=gra6.Image;
			gra6.Image=trawa;
			gra1.Image=gra2.Image;
			gra2.Image=gra3.Image;
			gra3.Image=trawa;
			gra7.Image=gra8.Image;
			gra8.Image=gra9.Image;
			gra9.Image=trawa;
			pozycjad-=1;
			pozycjas-=1;
			pozycjag-=1;
			Poruszanie();
		}
		//na ukos <- \/
		void Gra7Click(object sender, EventArgs e)
		{
			Sprawdzanie(7);
			Gra8Click(null,null);
			Gra4Click(null,null);
		}
		//w dół \/
		void Gra8Click(object sender, EventArgs e)
		{
			
			Sprawdzanie(8);
			gra2.Image=gra52.Image;
			gra52.Image=gra8.Image;
			gra8.Image=trawa;
			gra1.Image=gra4.Image;
			gra4.Image=gra7.Image;
			gra7.Image=trawa;
			gra3.Image=gra6.Image;
			gra6.Image=gra9.Image;
			gra9.Image=trawa;
			pozycjad-=3;
			pozycjas-=3;
			pozycjag-=3;
			Poruszanie();
		}
		//na ukos -> \/
		void Gra9Click(object sender, EventArgs e)
		{
			Sprawdzanie(9);
			Gra8Click(null,null);
			Gra6Click(null,null);
		}
		//poruszenie postaci
		void Poruszanie()
		{
			if(postac==1)
			{
				gra5.Image=wolverine2;
				chodzenie.Enabled=true;
			}
			else
			{
				gra5.Image=cubix2;
				chodzenie.Enabled=true;
			}
		}
		#endregion
		//sprawdzenie czy nie stoimy na domku, przeciwniku, stworku...
		void Sprawdzanie(int x)
		{	bool czyDwiePozycje=false;
			//więcej kliknięć niż potrzebujemy
			if(sklik>7) sklik=0;
			if(dklik>15) dklik=0;
			if(gklik>9) gklik=0;
			//kliknięto tyle ile trzeba
			if(sklik==7) StworekTick();
			if(gklik==9) GoscTick();
			if(dklik==15) DomekTick();
			if(x==pozycjad && (x==pozycjag || x==pozycjas)) czyDwiePozycje=true;
			//czy stoimu na domku, przeciwniku, stworku
			if(!czyDwiePozycje &&(x==pozycjad))
			{
				domek.Visible=true;
				Wiadomosc("Witaj w domku! Możesz tu kupować i sprzedawać mikstury oraz uleczać stworki.");
			}
			if(x==pozycjag || x==pozycjas) 
			{
				Walczenie(x);
			}
			//dodanie 1 kliknięcia 
			gklik++;
			dklik++;
			sklik++;
		}
		//postawienie przeciwnika
		void GoscTick()
		{
			Random r=new Random();
			gdzieg = r.Next(8);
			Random r2=new Random();
			jakig = r2.Next(5);
			switch(gdzieg)
				{
					case 1: gra1.Image=gosc[jakig];
							pozycjag=1; break;
					case 2: gra2.Image=gosc[jakig];
							pozycjag=2; break;
					case 3: gra3.Image=gosc[jakig];
							pozycjag=3;break;
					case 4: gra4.Image=gosc[jakig];
							pozycjag=4;break;
					case 5: gra6.Image=gosc[jakig];
							pozycjag=6;break;
					case 6: gra7.Image=gosc[jakig];
							pozycjag=7;break;
					case 7: gra8.Image=gosc[jakig];
							pozycjag=8;break;
					case 8: gra9.Image=gosc[jakig];
							pozycjag=9;break;
				}
				
				gklik=0;
		}
		//postawienie domku
		void DomekTick()
		{
			Random r=new Random();
			gdzied = r.Next(8);
			switch(gdzied)
				{
					case 1: gra1.Image=dom;
							pozycjad=1; break;
					case 2: gra2.Image=dom;
							pozycjad=2; break;
					case 3: gra3.Image=dom;
							pozycjad=3;break;
					case 4: gra4.Image=dom;
							pozycjad=4; break;
					case 5: gra6.Image=dom;
							pozycjad=6; break;
					case 6: gra7.Image=dom;
							pozycjad=7; break;
					case 7: gra8.Image=dom;
							pozycjad=8; break;
					case 8: gra9.Image=dom;
							pozycjad=9; break;
					
				}
				
				dklik=0;
		}
		
		//postawienie stworka
		void StworekTick()
		{
			Random r=new Random();
			gdzies = r.Next(9);
			
			switch(gdzies)
			{
					case 1: pozycjas=1; break;
					case 2: pozycjas=2; break;
					case 3: pozycjas=3; break;
					case 4: pozycjas=4; break;
					case 5: pozycjas=5; break;
					case 6: pozycjas=6; break;
					case 7: pozycjas=7; break;
					case 8: pozycjas=8; break;
					case 9: pozycjas=9; break;
			}
			
		}
		void Walczenie(int x)
		{
			if(pozycjas==x || x==0) moznaLapac=true;
			Random r= new Random();
			jakis=r.Next(26);
			walka1.Visible=true;
			if(postac==1)ja2.Image=Image.FromFile("wolverine.png");
			else ja2.Image=Image.FromFile("cubix.bmp");
			transTimer.Enabled=true;
			Wiadomosc("Właśnie zaczęła się walka! Kliknij stworka, którym chcesz walczyć.\nZ - atak\nX - użycie mikstury\nC - próba ucieczki\nV - trans, gdy pasek Trans jest pełny\nB - łapanie stworka");
			walka=moznaAtakowac=true;
			on.Image=stworek[1,jakis];
			wygrana=false;
			walka2.Enabled=false;
		}
		
		//poruszanie za pomocą klawiatury
		void MainFormKeyDown(object sender, KeyEventArgs e)
		{
			if((e.KeyCode==Keys.W) || (e.KeyCode==Keys.Up))Gra2Click(null,null);// /\
			if((e.KeyCode==Keys.S) || (e.KeyCode==Keys.Down))Gra8Click(null,null);// \/
			if((e.KeyCode==Keys.A) || (e.KeyCode==Keys.Left))Gra4Click(null,null);// <-
			if((e.KeyCode==Keys.D) || (e.KeyCode==Keys.Right))Gra6Click(null,null);// ->
			if(walka)
			{
				if((e.KeyCode==Keys.Z) && moznaAtakowac)//atak
				{
					Random r = new Random();
					switch(poziom)
					{
							case 1: mojatak=r.Next(50) + latak; break;
							case 2: mojatak=r.Next(75) + latak; break;
							case 3: mojatak=r.Next(100) + latak; break;
					}
					if(mojatak>onZycie.Value)
					{
						wygrana=true;
						czyTrans=walka1.Visible=false;
						Wiadomosc("Wygrałeś!");
						lexpo+=r.Next(10,100);
						dzielnik(llevel+1);
						//potrzebneExpo=lvl*100;
						if(potrzebneExpo<=lexpo) llevel++;
						//llevel=(int)(lexpo/100);
						expo.Text=lexpo+"";
						level.Text=llevel+"";
						latak=0;
						atakk.Text=latak+"";
						lobrona=0;
						obrona.Text=lobrona+"";
						ja.Image=null;
						transTimer.Enabled=false;
						transBar.Value=0;
						lkasa+=r.Next(50,300);
						liczbaKasy.Text=lkasa+"";
						onZycie.Value=onZycie.Maximum;
						poziom=1;
						walka2.Enabled=false;
					}
					else onZycie.Value-=mojatak;
					moznaAtakowac=false;
					walka2.Enabled=true;
				}
					
				if(e.KeyCode==Keys.X)//plecak
				{
					mikstury=true; 
					walka2.Enabled=true;
				}
				if(e.KeyCode==Keys.C)//ucieczka
				{
					moznaAtakowac=transTimer.Enabled=false;
					transBar.Value=0;
					
					if(ucieczka)
					{
						Wiadomosc("Uciekłeś!");
						walka1.Visible=false; 
						walka=false;
						onZycie.Value=onZycie.Maximum;
						poziom=1;
					}
					else
					{
						Wiadomosc("Nie udało się uciec!");
						transTimer.Enabled=true;
						walka2.Enabled=true;
					}
					ucieczka=!ucieczka;
					
				}
				if(e.KeyCode==Keys.V && czyTrans)//transformacja
				{
                    if (poziom < 3)
                    {
                        if (stworek[(poziom), wybrany] != null)
                        {
                            ja.Image = stworek[(poziom), wybrany];
                            transBar.Value = transBar.Minimum;
                            czyTrans = false;
                            poziom++;
                        }
                        else Wiadomosc("Ten stworek nie ma już przemiany");
                    }
                    else Wiadomosc("Ten stworek nie ma już przemiany");
				}
				if(e.KeyCode==Keys.B && moznaLapac)//łapanie
				{
					Random r= new Random();
					int czyZlapie = r.Next(3);
					if(czyZlapie==2)
					{
						Wiadomosc("Złapałeś stworka!\nKliknij stworka, za którego ma wejść złapany.");
						walka=moznaAtakowac=transTimer.Enabled=walka2.Enabled=walka1.Visible=false;
						transBar.Value=0;
						poziom=1;
						jestLapanie=true;
						
					}
					else 
					{
						Wiadomosc("Niestety, nie nie złapałeś stworka!");
						moznaAtakowac=walka2.Enabled=true;
					}
				}
			}
		}
		//Atak przeciwnika
		void Walka2Tick(object sender, EventArgs e)
		{
			if(!wygrana){
			Random r=new Random();
			int jegoatak=r.Next(1,50);
			walka2.Enabled=false;
			moznaAtakowac=true;
			switch(ktoreHP)
			{
					case 1: if(jegoatak<hp1.Value)
							{
								hp1.Value-=(jegoatak-lobrona);
								log.Items.Add("Zostałeś zaatakowany(-"+jegoatak+")!");
							}
							else
							{
								hp1.Value=hp1.Minimum;
								Wiadomosc("Niestety, przegrałeś.");
								czyTrans=transTimer.Enabled=moznaAtakowac=walka1.Visible=walka2.Enabled=walka=false;
								transBar.Value=0;
								poziom=1;
								ja.Image=null;
								
							}
								break;
					case 2: if(jegoatak<hp2.Value)
							{
								hp2.Value-=(jegoatak-lobrona);
                                log.Items.Add("Zostałeś zaatakowany(-" + jegoatak + ")!");
							}
							else
							{
								hp2.Value=hp2.Minimum;
                                Wiadomosc("Niestety, przegrałeś.");
								czyTrans=transTimer.Enabled=moznaAtakowac=walka1.Visible=walka2.Enabled=walka=false;
								transBar.Value=0;
								poziom=1;
								ja.Image=null;
							}break;
					case 3: if(jegoatak<hp3.Value)
							{
								hp3.Value-=(jegoatak-lobrona);
                                log.Items.Add("Zostałeś zaatakowany(-" + jegoatak + ")!");
							}
							else
							{
								hp3.Value=hp3.Minimum;
                                Wiadomosc("Niestety, przegrałeś.");
								czyTrans=transTimer.Enabled=moznaAtakowac=walka1.Visible=walka2.Enabled=walka=false;
								transBar.Value=0;
								poziom=1;
								ja.Image=null;
							}break;
					case 4: if(jegoatak<hp4.Value)
							{
								hp4.Value-=(jegoatak-lobrona);
                                log.Items.Add("Zostałeś zaatakowany(-" + jegoatak + ")!");
							}
							else
							{
								hp4.Value=hp4.Minimum;
                                Wiadomosc("Niestety, przegrałeś.");
								czyTrans=transTimer.Enabled=moznaAtakowac=walka1.Visible=walka2.Enabled=walka=false;
								transBar.Value=0;
								poziom=1;
								ja.Image=null;
							}break;
					case 5: if(jegoatak<hp5.Value)
							{
								hp5.Value-=(jegoatak-lobrona);
                                log.Items.Add("Zostałeś zaatakowany(-" + jegoatak + ")!");
							}
							else
							{
								hp5.Value=hp5.Minimum;
                                Wiadomosc("Niestety, przegrałeś.");
								czyTrans=transTimer.Enabled=moznaAtakowac=walka1.Visible=walka2.Enabled=walka=false;
								transBar.Value=0;
								poziom=1;
								ja.Image=null;
							}break;
					case 6: if(jegoatak<hp6.Value)
							{
								hp6.Value-=(jegoatak-lobrona);
                                log.Items.Add("Zostałeś zaatakowany(-" + jegoatak + ")!");
							}
							else
							{
								hp6.Value=hp6.Minimum;
                                Wiadomosc("Niestety, przegrałeś.");
								czyTrans=transTimer.Enabled=moznaAtakowac=walka1.Visible=walka2.Enabled=walka=false;
								transBar.Value=0;
								poziom=1;
								ja.Image=null;
							}break;
					case 7: if(jegoatak<hp7.Value)
							{
								hp7.Value-=(jegoatak-lobrona);
                                log.Items.Add("Zostałeś zaatakowany(-" + jegoatak + ")!");
							}
							else
							{
								hp7.Value=hp7.Minimum;
                                Wiadomosc("Niestety, przegrałeś.");
								czyTrans=transTimer.Enabled=moznaAtakowac=walka1.Visible=walka2.Enabled=walka=false;
								transBar.Value=0;
								poziom=1;
								ja.Image=null;
							}break;
			}
			
		}
		}
		
		#region Rozne
		
		// element poruszania
		void ChodzenieTick(object sender, EventArgs e)
		{
			if(postac==1) gra5.Image=wolverine;
			else gra5.Image=cubix;
			
			chodzenie.Enabled=false;
		}
		
		//kliknięcie w sklepie:
		//KUP
		void KupClick(object sender, EventArgs e)
		{
			rzeczy.Enabled=true;
            Wiadomosc("Kliknij na wybraną miksturę, aby ją kupić.\n\nKoszty:\nMikstura Uleczania:\t\t\t1000\nMikstura Transformacji:\t\t1000\nMikstura Uleczania i Transformacji:\t1800\nMikstura Ataku:\t\t\t1000\nMikstura Obrony:\t\t\t1000");
			kupowanie=true;
		}
		//SPRZEDAJ
		void SprzedajClick(object sender, EventArgs e)
		{
            Wiadomosc("Kliknij na miksturę, aby ją sprzedać.\n\nOtrzymasz:\nMikstura Uleczania:\t\t\t500\nMikstura Transformacji:\t\t500\nMikstura Uleczania i Transformacji:\t900\nMikstura Ataku:\t\t\t500\nMikstura Obrony:\t\t\t500");
			sprzedawanie=true;
		}
		//ULECZ
		void UleczClick(object sender, EventArgs e)
		{
			hp1.Value=hp1.Maximum;
			hp2.Value=hp2.Maximum;
			hp3.Value=hp3.Maximum;
			hp4.Value=hp4.Maximum;
			hp5.Value=hp5.Maximum;
			hp6.Value=hp6.Maximum;
			hp7.Value=hp7.Maximum;
			Wiadomosc("Twoje stworki zostały uleczone!");
		}
		//WYJDŹ
		void WyjdzClick(object sender, EventArgs e)
		{
			domek.Visible=sprzedawanie=kupowanie=false;
		}
		//zaznaczenie rzeczy do kupienia
		void RzeczySelectedIndexChanged(object sender, EventArgs e)
		{
			
			{
				switch(rzeczy.SelectedIndex)
				{
						case 0: if(kupowanie && (lkasa>=1000)){ 
								mup++;
								lkasa-=1000;
								mu.Text=mup+"";} break;
						case 1: if(kupowanie && (lkasa>=1000)){ 
								mtp++;
								lkasa-=1000;
								mt.Text=mtp+"";} break;
						case 2: if(kupowanie && (lkasa>=1800)){
								mutp++;
								lkasa-=1800;
								mut.Text=mutp+"";} break;
						case 3: if(kupowanie && (lkasa>=1000)){
								map++;
								lkasa-=1000;
								ma.Text=map+"";} break;
						case 4: if(kupowanie && (lkasa>=1000)){
								mop++;
								lkasa-=1000;
								mo.Text=mop+"";} break;
				}
				liczbaKasy.Text=lkasa+"";
			
			}
		}
		//Nowa gra
		void NowaGraToolStripMenuItemClick(object sender, EventArgs e)
		{
			System.Diagnostics.Process.Start("GameBoX.exe");
			Close();
		}
		//Transformacja
		void TransTimerTick(object sender, EventArgs e)
		{
			if(transBar.Value<transBar.Maximum) transBar.Value++;
			else
			{
				czyTrans=true;
				
			}
		}
		//pojawienie się grzybka
		void GrzybTick(object sender, EventArgs e)
		{
			if(grzybek>9) grzybek=1;
			switch(grzybek)
			{
					case 1: gra1.Image=trawa2; break;
					case 2: gra2.Image=trawa2; break;
					case 3: gra3.Image=trawa2; break;
					case 4: gra4.Image=trawa2; break;
					case 5: gra52.Image=trawa2; break;
					case 6: gra6.Image=trawa2; break;
					case 7: gra7.Image=trawa2; break;
					case 8: gra8.Image=trawa2; break;
					case 9: gra9.Image=trawa2; break;
			}
			grzybek++;
		}
		
		void Stworek1Click(object sender, EventArgs e)
		{
			if(walka && (hp1.Value!=0))
			{
				ja.Image=stworek1.Image;
				wybrany=indeks[0];
				ktoreHP=1;
			}
			if(jestLapanie)
			{
				
				ZlapStworka(1);
				jestLapanie=false;
			}
			
		}
		
		void Stworek2Click(object sender, EventArgs e)
		{
			if(walka && (hp2.Value!=0))
			{
				ja.Image=stworek2.Image;
				wybrany=indeks[1];
				ktoreHP=2;
			}
			if(jestLapanie)
			{
				
				ZlapStworka(2);
				jestLapanie=false;
			}
			
		}
		
		void Stworek3Click(object sender, EventArgs e)
		{
			if(walka && (hp3.Value!=0))
			{
				ja.Image=stworek3.Image;
				wybrany=indeks[2];
				ktoreHP=3;
			}
			if(jestLapanie)
			{
				
				ZlapStworka(3);
				jestLapanie=false;
			}
			
		}
		
		void Stworek4Click(object sender, EventArgs e)
		{
			if(walka && (hp4.Value!=0))
			{
				ja.Image=stworek4.Image;
				wybrany=indeks[3];
				ktoreHP=4;
				
			}
			if(jestLapanie)
			{
				
				ZlapStworka(4);
				jestLapanie=false;
			}
			
		}
		
		void Stworek5Click(object sender, EventArgs e)
		{
			if(walka && (hp5.Value!=0))
			{
				ja.Image=stworek5.Image;
				wybrany=indeks[4];
				ktoreHP=5;
			}
			if(jestLapanie)
			{
				
				ZlapStworka(5);
				jestLapanie=false;
			}
			
		}
		
		void Stworek6Click(object sender, EventArgs e)
		{
			if(walka && (hp6.Value!=0))
			{
				ja.Image=stworek6.Image;
				wybrany=indeks[5];
				ktoreHP=6;
			}
			if(jestLapanie)
			{
				
				ZlapStworka(6);
				jestLapanie=false;
			}
			
		}
		
		void Stworek7Click(object sender, EventArgs e)
		{
			if(walka && (hp7.Value!=0))
			{
				ja.Image=stworek7.Image;
				wybrany=indeks[6];
				ktoreHP=7;
			}
			if(jestLapanie)
			{
				
				ZlapStworka(7);
				jestLapanie=false;
			}
			
		}
					
		void ZapiszGręToolStripMenuItemClick(object sender, EventArgs e)
		{
			XmlTextWriter xml=null;
			try
			{
				//tworzenie pliku
				xml=new XmlTextWriter(zapis, System.Text.Encoding.UTF8);
				xml.Formatting=Formatting.Indented;
				xml.WriteStartDocument(true); //wersja XML itp.
				
				xml.WriteComment("Zapis gry GameBoX");
				
				//<opcje>
				xml.WriteStartElement("opcje");
				
				
				
				//<skile>
				xml.WriteStartElement("skile");
				
				//level, życie..
				xml.WriteElementString("level", level.Text);
				xml.WriteElementString("expo", expo.Text);
				xml.WriteElementString("życie1", hp1.Value+"");
				xml.WriteElementString("życie2", hp2.Value+"");
				xml.WriteElementString("życie3", hp3.Value+"");
				xml.WriteElementString("życie4", hp4.Value+"");
				xml.WriteElementString("życie5", hp5.Value+"");
				xml.WriteElementString("życie6", hp6.Value+"");
				xml.WriteElementString("życie7", hp7.Value+"");
				xml.WriteElementString("atak", atakk.Text);
				xml.WriteElementString("obrona", obrona.Text);
				
				//</skile>
				xml.WriteEndElement();
				
				//<stworki>
				xml.WriteStartElement("stworki");
				
				//stworki
				for(int i=0;i<7;i++)
				{
					xml.WriteElementString("s"+(i+1),indeks[i]+"");
				}
				
				
				
					
				//</stworki>
				xml.WriteEndElement();
				
				//<plecak>
				xml.WriteStartElement("plecak");
				
				//mu, ..., mo, kasa
				xml.WriteElementString("mu", mu.Text);
				xml.WriteElementString("mt", mt.Text);
				xml.WriteElementString("mut", mut.Text);
				xml.WriteElementString("ma", ma.Text);
				xml.WriteElementString("mo", mo.Text);
				xml.WriteElementString("kasa", liczbaKasy.Text);
				
				//</plecak>
				xml.WriteEndElement();
				
				//xml.WriteElementString("label1", label1.Text);
				xml.WriteElementString("walka", walka1.Visible+"");
				xml.WriteElementString("domek", domek.Visible+"");
				xml.WriteElementString("postac", postac+"");
				
				xml.WriteEndDocument();//koniec zapisu
				xml.Close();
			}
			catch(Exception exc)
			{
				MessageBox.Show("Błąd w zapisywaniu gry -"+ exc.Message, "Bład!", MessageBoxButtons.OK, MessageBoxIcon.Error);
				xml.Close();
			}
		}
		
		void ZamknijToolStripMenuItemClick(object sender, EventArgs e)
		{
			Close();
		}
		
		void WczytajGręToolStripMenuItemClick(object sender, EventArgs e)
		{
			MainFormLoad(null,null);
		}
	
		void M1Click(object sender, EventArgs e)
		{
			if(walka && mikstury && (mup>0))
			{
				UleczClick(null,null);
				mup--;
				mu.Text=mup+"";
			}
			if(sprzedawanie && (mup>0))
			{
				mup--;
				mu.Text=mup+"";
				lkasa+=500;
				liczbaKasy.Text=lkasa+"";
			}
		}
		
		void M3Click(object sender, EventArgs e)
		{
			if(walka && mikstury && (mutp>0))
			{
				transBar.Value=transBar.Maximum;
				UleczClick(null,null);
				Wiadomosc("Twoje stworki zostały uleczone, a poziom trans jest równy MAX!");
				mutp--;
				mut.Text=mutp+"";
			}
			if(sprzedawanie && (mutp>0))
			{
				mutp--;
				mut.Text=mutp+"";
				lkasa+=900;
				liczbaKasy.Text=lkasa+"";
			}
			
		}
				
		void M2Click(object sender, EventArgs e)
		{
			if(walka && mikstury && (mtp>0))
			{
				transBar.Value=transBar.Maximum;
				Wiadomosc("Masz MAX transu!");
				mtp--;
				mt.Text=mtp+"";
			}
			if(sprzedawanie && (mtp>0))
			{
				mtp--;
				mt.Text=mtp+"";
				lkasa+=500;
				liczbaKasy.Text=lkasa+"";
			}
		}
		
		void M4Click(object sender, EventArgs e)
		{
			if(walka && mikstury && (map>0))
			{
				latak+=25;
				atakk.Text=latak+"";
				Wiadomosc("Atakujesz o 25 więcej!");
				map--;
				ma.Text=map+"";
			}
			if(sprzedawanie && (map>0))
			{
				map--;
				ma.Text=map+"";
				lkasa+=500;
				liczbaKasy.Text=lkasa+"";
			}
		}
		void M5Click(object sender, EventArgs e)
		{
			if(walka && mikstury && (mop>0))
			{
				lobrona+=25;
				obrona.Text=lobrona+"";
				Wiadomosc("Masz więcej obrony o 25!");
				mop--;
				mo.Text=mop+"";
			}
			if(sprzedawanie && (mop>0))
			{
				mop--;
				mo.Text=mop+"";
				lkasa+=500;
				liczbaKasy.Text=lkasa+"";
			}
		}
		void ZlapStworka(int gdzie)
		{
			switch(gdzie)
			{
				case 1: stworek1.Image=on.Image;
					indeks[0]=jakis; break;
				case 2: stworek2.Image=on.Image;
					indeks[1]=jakis; break;
				case 3: stworek3.Image=on.Image;
					indeks[2]=jakis; break;
				case 4: stworek4.Image=on.Image;
					indeks[3]=jakis; break;
				case 5: stworek5.Image=on.Image;
					indeks[4]=jakis; break;
				case 6: stworek6.Image=on.Image;
					indeks[5]=jakis; break;
				case 7: stworek7.Image=on.Image;
					indeks[6]=jakis; break;
			}
		}
		void dzielnik(int lvl)
		{
			potrzebneExpo=0;			
			do
			{
				potrzebneExpo+=lvl;
				lvl--;
			}
			while(lvl==0);
			potrzebneExpo*=100;
			
		}
		#endregion
			
		
		void OProgramieToolStripMenuItemClick(object sender, EventArgs e)
		{
			MessageBox.Show("GameBoX: Wolve i Cubix\nby Cubix\nhttp://cubix.to.pl\ncubix651@gmail.com");
		}
        void Wiadomosc(string tekst)
        {
            log.Items.Add(tekst);
            if(czyMsgBox.Checked) MessageBox.Show(tekst, "GameBoX", MessageBoxButtons.OK, MessageBoxIcon.Information);
        }
	}	
}
